#define TABLESIZE 27

struct linknode
{
	struct linknode *next;
	char filePath[100];
	struct file_descriptor *fdescriptor;
};

struct linknode *hashTable[TABLESIZE];							//global variable

void initializeHashTable(struct linknode **hashTable);

int calcHash(char alpha);

int getSize(struct linknode *hashNode);

struct linknode* insertNode(struct linknode *hashNode, struct file_descriptor *fd, char path[]);

struct linknode* deleteNode(struct linknode *hashNode, struct file_descriptor *fd, char path[]);

struct linknode** searchNode(struct linknode *hashNode, char name[]);

void showList(struct linknode *hashNode);

void insertFileInHashTable(struct file_descriptor *fd, char path[], struct linknode **hashTable);

void deleteFileFromHashTable(struct file_descriptor *fd, char path[], struct linknode **hashTable);

void searchFileInHashTable(char name[], struct linknode **hashTable);

void displayHashTable(struct linknode **hashTable);

void mountHashTable(struct file_descriptor_list* FDList, struct linknode **hashTable);

void searchFileInHashTable2(char name[], char filename[]);